home *** CD-ROM | disk | FTP | other *** search
Wrap
` INNOVATIONS 1992 ` `If you find any of this code/data (not that you will mind), then use it `I`m not a grouch, but a generous sole, I wont say `for example, "I DONT WANNA SEE ANY OF MY CODE IN YOUR PROGRAMS" `on the contrary "USE IT AS MUCH AS YOU LIKE!" `you dont have to credit me if you dont wont to. ` `Oh well, I decided to stick some source `some of the more advanced users will not find this `code any use really, but feel free to browse `As you can see, the code is fairly well structured `(even uses parameters), so I hope this makes reading it `more meaningfull. `This demo (if you can call it one), was written, in `5 days(yes five days), and compiled in another day `given the gremlins! `There are 1 or 2 bits of code I could not include `for example, the fractal generator, is too big to `fit on the disk which is already 99% full, sorry about this, but `all main programs have been packed as much as possible `to allow for some of this source. `Any comments, then write to me, address can be found `at end of demo. Screen Open 1,320,200,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On * kill the multi-tasking, for more CPU time D=Execall(-132) Load "df0:ins1" Music 1 Get Disc Fonts Set Font 2 Set Font 1 Get Rom Fonts Global MESSAGE,A$,I Degree Load "df0:in001" ST1 ST2 ST3 _INTRO Erase 10 : Erase 11 MESSAGE=1 ` _text_up_down[waitingtime,true or false for loading something,load request number] _TEXT_INFORMATION _TEXT_UP_DOWN[600,F,0] MESSAGE=2 _TEXT_INFORMATION _TEXT_UP_DOWN[500,F,0] MESSAGE=3 _TEXT_INFORMATION _TEXT_UP_DOWN[350,F,0] CHAOS_FRACTAL MESSAGE=4 _TEXT_INFORMATION _TEXT_UP_DOWN[300,T,1] _ZOOM_SCREEN MESSAGE=5 _TEXT_INFORMATION _TEXT_UP_DOWN[300,F,0] PICCY MESSAGE=6 _TEXT_INFORMATION _TEXT_UP_DOWN[500,T,2] CUBES_480 Screen Close 3 MESSAGE=7 _TEXT_INFORMATION _TEXT_UP_DOWN[450,T,3] _INTRO_SETUP SET_UP_DETAILS MOVE_STARS MESSAGE=8 _TEXT_INFORMATION _TEXT_UP_DOWN[500,F,0] MAKE_PICCY MESSAGE=9 _TEXT_INFORMATION _TEXT_UP_DOWN[500,F,0] MULTI_SCROLL `fade music For TT=63 To 1 Step -1 Mvolume TT : Wait Vbl Next TT Music Off Erase 3 : Erase 12 : Erase 1 `run copper program Run "df0:curves" Procedure _INTRO Screen Open 2,340,200,32,Lowres Curs Off : Flash Off : Cls 0 : Hide On Unpack 7 To 2 Hide On : Erase 7 Screen Open 1,340,275,16,Lowres Load "df0:innovation-logo" Curs Off : Flash Off : Cls 0 : Hide On Load "df0:a0001",10 Load "df0:a0002",11 Palette $0,$F,$F,$F,$F,$F,$F,$F,$F,$F,$F,$F,$F Screen Open 0,340,256,2,Lowres : Double Buffer : Autoback 0 Hide On : Curs Off Screen Display 0,130,,, Screen Offset 0,7, Colour 1,$F REG=Start(10) REG2=Start(11) For R=1 To 140 Step 2 Cls 0 Polygon Deek(REG),Deek(REG+2) To Deek(REG+4),Deek(REG+6) To Deek(REG+8),Deek(REG+10) To Deek(REG+12),Deek(REG+14) To Deek(REG+16),Deek(REG+18) To Deek(REG),Deek(REG+2) Add REG,20 Screen Swap Wait Vbl Next R For N=0 To 45 Cls 0 Polygon Deek(REG2),Deek(REG2+2) To Deek(REG2+4),Deek(REG2+6) To Deek(REG2+8),Deek(REG2+10) To Deek(REG2+12),Deek(REG2+14) To Deek(REG2+16),Deek(REG2+18) To Deek(REG2),Deek(REG2+2) Add REG2,20 Screen Swap : Wait Vbl If REG2=Start(11)+400 Then Exit Next N Cls 0 X=58 : X1=260 : Y=26 : Y1=229 Bar 58,26 To 260,229 For X=58 To -20 Step -1 Cls 0 Bar X,Y To X1,Y1 Screen Swap : Wait Vbl : Inc X1 : Inc Y : Dec Y1 Next X Screen 1 Autoback 1 Screen Copy 0 To 1 : Screen To Front 1 Colour 13,$F : Ink 13 : Paint 50,110 Screen Display 1,130,,, : Screen Offset 1,7, Paste Bob 11,110,1 Fade 3,$0,$F,$11F,$22F,$33F,$44F,$55F,$66F,$77F,$88F,$99F,$AAF,$BBF,$0,$0 Wait 45 Fade 4,$5,,,,,,,,,,,,,$5 : Wait 60 X=0 : X1=339 : Y=109 : Y1=146 Ink 12 Autoback 0 For X=0 To 339 Plot X,Y : Plot X1,Y1 Dec X1 Screen Swap Next X Ink 12 X=0 Colour 14,$0 Double Buffer Autoback 0 Get Bob 1,2,0,108 To 335,150 Paste Bob 0,Y,2 For Y=109 To 0 Step -1 Paste Bob 0,Y,2 Screen Swap : Wait Vbl Next Y End Proc Procedure _TEXT_INFORMATION Screen Open 0,320,200,8,Lowres Curs Off : Flash Off : Cls 0 : Hide On Palette $5,$888,$999,$AAA,$BBB,$CCC,$DDD,$EEE Screen Display 0,,320,, Set Rainbow 3,1,4096,"(15,1,15)(15,-1,15)","(1,1,10)(1,-1,10)","(10,1,10)(10,-1,10)" Ink 1,0 Set Font 3 ` Notice the absence of gotos in any of this code(yeuch) If MESSAGE=1 Then Gosub MESSAGE1 If MESSAGE=2 Then Gosub MESSAGE2 If MESSAGE=3 Then Gosub MESSAGE3 If MESSAGE=4 Then Gosub MESSAGE4 If MESSAGE=5 Then Gosub MESSAGE5 If MESSAGE=6 Then Gosub MESSAGE6 If MESSAGE=7 Then Gosub MESSAGE7 If MESSAGE=8 Then Gosub MESSAGE8 If MESSAGE=9 Then Gosub MESSAGE9 Pop Proc MESSAGE1: A$="MACH II" Text 165-Len(A$)*8/2,10,A$ A$="Yes innovations are back" Text 165-Len(A$)*8/2,30,A$ A$="bigger, brighter and better than ever" Text 165-Len(A$)*8/2,40,A$ A$="Lets show you some more tricks" Text 165-Len(A$)*8/2,50,A$ A$="Freestyle was nice, but this is better." Text 165-Len(A$)*8/2,70,A$ A$="Yes this demo, was compiled very quickly" Text 165-Len(A$)*8/2,80,A$ A$="but has some nice original stuff I've" Text 165-Len(A$)*8/2,100,A$ A$="not seen before (I think) in Amos." Text 165-Len(A$)*8/2,110,A$ A$="Hopefully its a bit different......." Text 165-Len(A$)*8/2,120,A$ A$="Lets get this demo rolling, first contents" Text 165-Len(A$)*8/2,165,A$ Return MESSAGE2: A$="CONTENTS" Text 165-Len(A$)*8/2,10,A$ A$=" ----------------" Text 165-Len(A$)*8/2,20,A$ A$="Chaos fractal" Text 165-Len(A$)*8/2,40,A$ A$="Full screen zoom" Text 165-Len(A$)*8/2,60,A$ A$="Some nice graphics and scrolly" Text 165-Len(A$)*8/2,80,A$ A$="3D bubble world - honest!" Text 165-Len(A$)*8/2,100,A$ A$="More scrollies!!!!!!!!!!!" Text 165-Len(A$)*8/2,120,A$ A$="Curvacious cube & scroll with reflections" Text 165-Len(A$)*8/2,140,A$ A$="3d starfield - no dual playfield used!" Text 165-Len(A$)*8/2,160,A$ A$="The credits and some info!" Text 165-Len(A$)*8/2,180,A$ Return MESSAGE3: A$="Lets start off with a nice chaos fractal" Text 165-Len(A$)*8/2,10,A$ A$="Using a very simple formula but still" Text 165-Len(A$)*8/2,30,A$ A$="very nice. Its precalculated of course" Text 165-Len(A$)*8/2,50,A$ A$="because its soooow slow in realtime." Text 165-Len(A$)*8/2,70,A$ A$="So lets have a look, and appreciate the" Text 165-Len(A$)*8/2,90,A$ A$="mathematics involved................." Text 165-Len(A$)*8/2,110,A$ Return MESSAGE4: A$="Very nice, but now lets move on!" Text 165-Len(A$)*8/2,10,A$ A$="Ever been jealous and teased" Text 165-Len(A$)*8/2,30,A$ A$="that Amos cant handle Zoom" Text 165-Len(A$)*8/2,50,A$ A$="effexs. Well worry no more" Text 165-Len(A$)*8/2,70,A$ A$="this is a very powerful and" Text 165-Len(A$)*8/2,90,A$ A$="simple method.............." Text 165-Len(A$)*8/2,110,A$ A$="Watch the screen very carefully!" Text 165-Len(A$)*8/2,130,A$ Return MESSAGE5: A$="Well, impressed, you should be" Text 165-Len(A$)*8/2,10,A$ A$="that was all in one frame" Text 165-Len(A$)*8/2,30,A$ A$="That certainly makes all the" Text 165-Len(A$)*8/2,50,A$ A$="difference to the slow amos zoom" Text 165-Len(A$)*8/2,70,A$ A$="As you can see from the last demo" Text 165-Len(A$)*8/2,90,A$ A$="the message routine is much improved " Text 165-Len(A$)*8/2,110,A$ A$="more friendlier and versatile." Text 165-Len(A$)*8/2,130,A$ A$="Now some GFX from marc!" Text 165-Len(A$)*8/2,150,A$ A$="This ones an ugly looking brute!" Text 165-Len(A$)*8/2,170,A$ Return MESSAGE6: A$="Well a nice little pic by Marc" Text 165-Len(A$)*8/2,10,A$ A$="O.k I've seen 24,48,64 animated vector" Text 165-Len(A$)*8/2,30,A$ A$="objects in an amos demo. But lets destroy" Text 165-Len(A$)*8/2,50,A$ A$="that. 480, and in hires interlaced mode." Text 165-Len(A$)*8/2,70,A$ A$="Is that possible?. Yep, easy and simple" Text 165-Len(A$)*8/2,90,A$ A$="I think you will like this a lot." Text 165-Len(A$)*8/2,110,A$ A$="An Amos first and a record I think!" Text 165-Len(A$)*8/2,130,A$ A$="However I think its very interesting" Text 165-Len(A$)*8/2,150,A$ A$="in 50 frames a sec dont you........." Text 165-Len(A$)*8/2,170,A$ Return MESSAGE7: A$="Innovations Send Greets to:-" Text 165-Len(A$)*8/2,10,A$ A$="Jag and Shockwave of Fanatix" Text 165-Len(A$)*8/2,30,A$ A$="Graphic reality - Hi guys!" Text 165-Len(A$)*8/2,50,A$ A$="All the Syntex group" Text 165-Len(A$)*8/2,70,A$ A$="Futurize, Fumble, Zirus and Cybernetics" Text 165-Len(A$)*8/2,90,A$ A$="Len and Anne Tucker, Jason Holborn" Text 165-Len(A$)*8/2,110,A$ A$="Lets take a trip into bubble space!" Text 165-Len(A$)*8/2,130,A$ Return MESSAGE8: A$="Wowsers, that was in 50 frames and not" Text 165-Len(A$)*8/2,10,A$ A$="at all pre-calculated, which should get" Text 165-Len(A$)*8/2,30,A$ A$="a few other coders buzzing. " Text 165-Len(A$)*8/2,50,A$ A$="Now lets see a real horrific pic" Text 165-Len(A$)*8/2,70,A$ A$="from marc (stryx). This is one of my" Text 165-Len(A$)*8/2,90,A$ A$="favourites, and still oozes of quality." Text 165-Len(A$)*8/2,110,A$ A$="Incidently these graphics are 100% hand" Text 165-Len(A$)*8/2,130,A$ A$="drawn not ripped from other demos." Text 165-Len(A$)*8/2,150,A$ A$="So you've seen them here first........." Text 165-Len(A$)*8/2,170,A$ Return MESSAGE9: A$="There you are, impressive eh!!!!!!!!!!!" Text 165-Len(A$)*8/2,10,A$ A$="O.k lets bliterize the screen, yep more" Text 165-Len(A$)*8/2,30,A$ A$="scrollies, but at different speeds and" Text 165-Len(A$)*8/2,50,A$ A$="some with different text, and super high" Text 165-Len(A$)*8/2,70,A$ A$="resolutions in most cases. Can you read" Text 165-Len(A$)*8/2,90,A$ A$="the different messages in one go?" Text 165-Len(A$)*8/2,110,A$ A$="oh Yeh the font is non boring!. Most" Text 165-Len(A$)*8/2,130,A$ A$="importantly it runs in 50 frames, which" Text 165-Len(A$)*8/2,150,A$ A$="is quite neat......................... " Text 165-Len(A$)*8/2,170,A$ Return End Proc Procedure _TEXT_UP_DOWN[TIM,EXCEPTION,NO] For Y=320 To 100 Step -4 Screen Display 0,,Y,, Rainbow 3,80,Y,220 Wait Vbl Next Y If EXCEPTION=T and NO=1 Then Load "df0:a0003" If EXCEPTION=T and NO=2 Then Load "df0:futhercubeanims" If EXCEPTION=T and NO=3 Then Load "df0:b001" For PAUSE=1 To TIM : Wait Vbl If Mouse Key=1 Then Exit Next PAUSE For Y=100 To 320 Step 4 Screen Display 0,,Y,, Rainbow 3,80,Y,220 Wait Vbl Next Y Cls 0 Pop Proc End Proc `simple pause loop, with in-built escape (mouse button) `Amos wait is not really adequate Procedure PAUSE[TIM] For PAUSE=0 To TIM Wait Vbl : If Mouse Key=1 Then Exit Next PAUSE Pop Proc End Proc `As mentioned, fractal stored as packed pic, amos is `too slow, so what`s the point in making you watch for `5-10 minutes whilst a fractal is drawing Procedure CHAOS_FRACTAL X=0 : Y=0 : X1=1 : Y1=200 Screen Display 1,,42,, Screen Open 3,330,200,32,Lowres Curs Off : Flash Off : Cls 0 : Colour 0,$5 Screen Display 3,,82,, Get Palette 2 Colour 0,$5 Repeat Screen Copy 2,X,Y,X1,Y1 To 3,X,0 Wait Vbl : Inc X : Inc X1 Until X=330 PAUSE[300] Y=82 For Y=82 To 350 Step 10 Screen Display 3,,Y,, Wait Vbl Next Y Screen Close 3 : Screen Close 2 End Proc Procedure _ZOOM_SCREEN Screen Open 2,340,265,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Palette $4,$FFF POS=384 : POS2=42 Screen Display 2,112,POS,, Double Buffer Autoback 0 Make Mask X=41 : X1=119 : X2=-36 : X3=196 Y4=96 : Y3=88 : Y2=80 : Y1=72 : Y=64 Y5=104 : Y6=112 : Y7=120 : Y8=128 Timer=0 For POS=385 To 35 Step -5 Screen Display 2,,POS,, Screen Display 1,,POS2,, : Wait Vbl If POS=85 or POS<85 Then Add POS2,-5 Next POS `This routine is cheating, but I think it is effective Do If Z>500 Then FLAG=1 For T=1 To 25 Z=Timer If FLAG=0 Then Cls 0 Paste Bob X2,Y,T : Paste Bob X,Y,T : Paste Bob X1,Y,T : Paste Bob X3,Y,T Paste Bob X2,Y1,T : Paste Bob X,Y1,T : Paste Bob X1,Y1,T : Paste Bob X3,Y1,T Paste Bob X2,Y2,T : Paste Bob X,Y2,T : Paste Bob X1,Y2,T : Paste Bob X3,Y2,T Paste Bob X2,Y3,T : Paste Bob X,Y3,T : Paste Bob X1,Y3,T : Paste Bob X3,Y3,T Paste Bob X2,Y4,T : Paste Bob X,Y4,T : Paste Bob X1,Y4,T : Paste Bob X3,Y4,T Paste Bob X2,Y5,T : Paste Bob X,Y5,T : Paste Bob X1,Y5,T : Paste Bob X3,Y5,T Paste Bob X2,Y6,T : Paste Bob X,Y6,T : Paste Bob X1,Y6,T : Paste Bob X3,Y6,T Paste Bob X2,Y7,T : Paste Bob X,Y7,T : Paste Bob X1,Y7,T : Paste Bob X3,Y7,T Paste Bob X2,Y8,T : Paste Bob X,Y8,T : Paste Bob X1,Y8,T : Paste Bob X3,Y8,T Add X2,-6 : Add X,-2 : Add X1,2 : Add X3,6 Add Y3,-2 : Add Y2,-4 : Add Y1,-6 : Add Y,-8 Add Y5,2 : Add Y6,4 : Add Y7,6 : Add Y8,8 Screen Swap : Wait Vbl If Mouse Key Then FLAG=1 Next T If FLAG=1 Then Fade 3,$FFF : Wait 40 : Gosub CLEAR_IT : Pop Proc For T=25 To 1 Step -1 Cls 0 Paste Bob X2,Y,T : Paste Bob X,Y,T : Paste Bob X1,Y,T : Paste Bob X3,Y,T Paste Bob X2,Y1,T : Paste Bob X,Y1,T : Paste Bob X1,Y1,T : Paste Bob X3,Y1,T Paste Bob X2,Y2,T : Paste Bob X,Y2,T : Paste Bob X1,Y2,T : Paste Bob X3,Y2,T Paste Bob X2,Y3,T : Paste Bob X,Y3,T : Paste Bob X1,Y3,T : Paste Bob X3,Y3,T Paste Bob X2,Y4,T : Paste Bob X,Y4,T : Paste Bob X1,Y4,T : Paste Bob X3,Y4,T Paste Bob X2,Y5,T : Paste Bob X,Y5,T : Paste Bob X1,Y5,T : Paste Bob X3,Y5,T Paste Bob X2,Y6,T : Paste Bob X,Y6,T : Paste Bob X1,Y6,T : Paste Bob X3,Y6,T Paste Bob X2,Y7,T : Paste Bob X,Y7,T : Paste Bob X1,Y7,T : Paste Bob X3,Y7,T Paste Bob X2,Y8,T : Paste Bob X,Y8,T : Paste Bob X1,Y8,T : Paste Bob X3,Y8,T Add X2,6 : Add X,2 : Add X1,-2 : Add X3,-6 Add Y3,2 : Add Y2,4 : Add Y1,6 : Add Y,8 Add Y5,-2 : Add Y6,-4 : Add Y7,-6 : Add Y8,-8 Screen Swap : Wait Vbl If Mouse Key Then FLAG=1 Next T Loop Pop Proc CLEAR_IT: For POS=35 To 385 Step 5 Screen Display 1,,POS2,, Screen Display 2,,POS,, : Wait Vbl If POS=35 or POS<85 Then Add POS2,5 Next POS Screen Close 2 Return End Proc Procedure PICCY Screen 1 Fade 2,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5 : Wait 25 Unpack 8 To 6 : Colour 0,$5 ` I`ve actaully blocked off this routine. All it does is ` draws the piccy on the screen in a nicer way. ` But the damn thing failed to compile, probably too much ` packed stuff in memory! when this screen was opened,but I cant be sure. ' Screen Open 7,320,200,32,Lowres ' Curs Off : Flash Off : Cls 0 : Hide On ' Double Buffer : Autoback 0 ' Get Palette 6 ' Colour 0,$5 ' Screen Display 7,130,90,320,200 ' Q=160 : W=83 : X=161 : Y=85 ' Repeat ' Screen Copy 6,Q,W,X,Y To 7,Q,W-20 ' Add Q,-2 : Add W,-2 : Add X,2 : Add Y,2 ' Screen Swap : Wait Vbl ' Until Q<-42 ' For COUNTER=1 To 380 : Wait Vbl : If Mouse Key Then Exit : Next COUNTER ' Ink 0 ' Repeat ' Box Q,W To X,Y : Box Q+1,W+1 To X-1,Y-1 : Screen Swap : Wait Vbl ' Inc Q : Inc W : Dec X : Dec Y ' Until Q=160 Repeat Until Mouse Key Fade 3,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5 Wait 40 Screen To Front 1 : Screen 1 Fade 2,$5,$F,$11F,$22F,$33F,$44F,$55F,$66F,$77F,$88F,$99F,$AAF,$BBF Wait 25 Screen Close 6 End Proc ` 480 cubes, what a laugh, this started out a joke, but ` its fun to see how much you can stuff on the screen Procedure CUBES_480 Screen 1 Fade 2,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5 : Wait 25 POS=10 : POS1=171 Screen Open 5,340,160,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Autoback 0 Palette $5 Screen Display 5,,POS,, Screen Open 6,340,160,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Autoback 0 Palette $5 Screen Display 6,,171,, Screen Open 2,680,262,4,Hires+Laced Curs Off : Flash Off : Cls 0 : Hide On Double Buffer : Autoback 0 Screen Display 2,125,35,, Palette $5,$FFF,$999,$666 Screen Clone 3 Screen Display 3,,167,, Screen To Front 5 : Screen To Front 6 Channel 0 To Screen Display 5 ` overlay too screens and move them in opposite directions ` making it look like one screen is being split ` use amal to move screens! Amal 0,"A:M 0,-160,160;" Amal On 0 Channel 1 To Screen Display 6 Amal 1,"A:M 0,160,160;" Amal On 1 Channel 2 To Screen Display 5 Amal 2,"A:M 0,160,160;" Channel 3 To Screen Display 6 Amal 3,"A:M 0,-160,160;" No Mask F=1 Palette $5,$FFF,$999,$666 Bob 1,150,270,131 ` draw one line copy down the screen, nice in interlaced hireds! Repeat For T=1 To 680 Step 28 Paste Bob T,0,F Next T For T1=28 To 260 Step 26 Screen Copy 2,0,0,680,26 To 2,0,T1 If Mouse Key Then FLAG=1 : If FLAG=1 Then Timer=0 : Amal On 2 : Amal On 3 Next T1 Screen Swap : Wait Vbl Inc F If F=130 Then F=1 Z=Timer ` use the timer(internal clock), to let a routine run for so long ` Remember set timer to zero (before entering a routine) ` Another thing with the timer, is that its takes less CPU time ` compared to a counter. eg inc count, until count=500. Until FLAG=1 and Z>180 Screen Close 2 : Screen To Front 1 : Screen Close 5 : Screen Close 6 Screen 1 Fade 2,$5,$F,$11F,$22F,$33F,$44F,$55F,$66F,$77F,$88F,$99F,$AAF,$BBF Wait 25 End Proc Procedure MAKE_PICCY Screen 1 Fade 2,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5 Wait 30 Screen Open 3,370,17,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Screen Display 3,,278,, Fade 1,$5,$FFF : Wait 2 Screen Open 2,320,200,32,Lowres Curs Off : Flash Off : Cls 0 : Hide On Unpack 9 To 2 Screen Display 2,,35,, Palette $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0 Load "df0:picpal" ` load palette, which is quick and lazy way really! Fade 2 To -1 : Wait 25 ` scroll routine[screen number, xleft,yleft, depth,speed,colour,length] _SCROLL_ROUTINE1[3,0,0,14,2,2,318] Screen 0 Pop Proc End Proc Procedure _SCROLL_ROUTINE1[SCRN,X,Y,SIZE,SPEED,_COL,AREA] T$="^WELL LOOK AT THIS HAND DRAWN PICCY. QUALITY STUFF" T$=T$+" . I HOPE THESE ROUTINES NOW" T$=T$+" PROVE HOW MUCH CAN BE DONE WIH AMOS. THERES SO " T$=T$+"MUCH MORE AND ITS GOOD TO SEE MUCH QUALITY CODE THESE" T$=T$+" DAYS. ESPECIALLY FROM A NUMBER OF CODERS WHO WILL GET" T$=T$+" A MENTION. ONE COMPLAINT THOUGH WHY IS IT THAT FOUR" T$=T$+" MONTHS AGO JASON HOLBORN OF AMOS COLUMN IN AMIGA SHOPPER" T$=T$+" STARTED UP A COMPO FOR MOVING SIXTY BOBS,SPRITES" T$=T$+" AND DOING IT PARALLAX STARFIELD FASION. NOW ALL THAT" T$=T$+" SEEMS TO HAVE BEEN FORGOTTEN, OR WAS IT BECAUSE NO ONE COULD" T$=T$+" DO IT?. WELL MOST PARALLAX STARFIELDS IN AMOS DEMOS ARE EITHER" T$=T$+" COLOUR CYCLED, DUAL PLAYFIELD, OR HAVE TWENTY ODD SPRITES. WHICH FRANKLY" T$=T$+" IS NOW OLD. I HAVE WRITTEN A" T$=T$+" STARFIELD THAT HANDLES EIGHTY BOBS IN PARALLAX. SEE IT LATER." T$=T$+" NOW FOR SOME GREETS !" T$=T$+"SHOCKWAVE &* " T$=T$+" AND JAG &*" T$=T$+" FANATIX &*" T$=T$+" SYNTEX &*" T$=T$+" GRAPHIC REALITY &*" T$=T$+" ZIRUS &*" T$=T$+" FUMBLE &*" T$=T$+" FUTURIZE &*" T$=T$+" CYBERNETICS &*" T$=T$+" CHROME &*" T$=T$+" TSM &^" T$=T$+" SPECIALS GREETS" T$=T$+" LEN AND ANNE TUCKER. DAN. KYLE. KEITH. SIMON" T$=T$+". TERRI. MIKE. MARK. STEVE. NIZ. PHILL. THATS IT" T$=T$+" I HOPE YOU LIKE IT SO FAR. COMING UP RUBBER CUBE" T$=T$+", SORRY ITS A MULTILOAD BIT BECAUSE I CAN T BE BOTHERED TO MERGE THE ROUTINE IN. SAD EH....................." Screen Open SCRN,370,SIZE+4,2,Lowres Screen Display SCRN,,AREA,, Curs Off : Flash Off : Cls 0 Palette $5,$FFF Polyline 0,0 To 340,0 Polyline 0,17 To 340,17 Channel 0 To Screen Display 3 Amal 0,"A:M 0,-40,40;" Amal On 0 Repeat Inc CNT : If CNT>(20/SPEED) Then Gosub NEWLET Screen Copy SCRN,X,Y+2,368,Y+SIZE+2 To SCRN,-SPEED,Y+2 Wait Vbl Until Mouse Key Channel 0 To Screen Display 3 Amal 0,"A:M 0,45,45;" Screen 2 : Fade 2,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5,$5 : Amal On 0 : Wait 35 Screen Close 2 Screen 1 Fade 2,$5,$111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$FFF,$5 Wait 25 Pop Proc NEWLET: ` although this is not as quick as amal, its the easy way out (again) ` there is a quicker way, but at the time of writing I have not ` included it. Although I`ve seen a few jerky scrollies, all blitter ` produced, so heres a few tips if you want to do smoother blitter stuff ` Dont use def scroll, use screen copy, it is faster ` Make sure you use autoback 0 (fastest screen mode) ` Store fonts as icons (if your using a fancy coloured font) ` I say this because your sprite banks will be more free ` Use a fairly quick system, to retrieve the font letter you want ` Ie if your font bank has fonts of order ABCDEFGHIJKLMNOPQRSTUVWXYZ;.0123456789space ` now work out a suitable formula. What I did was to ` take the letter (read from string), get its ascii value, and take 64 from it ` giving you the icon position in the bank, now paste the icon and repeat ` obviously the routine will perform depending how you implement this ` Here I`ve included character suchs as !^&? to signal various speeds ` by changing a variable, and then move a blank space to it. ` There is a faster method, which gives you instant results, ` I may mention this later some time. But this should help. LET$=Mid$(T$,PNR,1) T=Asc(LET$)-64 If LET$=" " Then T=40 If LET$="." Then T=27 If LET$="?" Then T=28 If LET$="," Then T=39 If LET$="!" Then T=40 : SPEED=1 If LET$="£" Then T=40 : SPEED=2 If LET$="$" Then T=40 : SPEED=3 If LET$="%" Then T=40 : SPEED=4 If LET$="^" Then T=40 : SPEED=5 If LET$="&" Then T=40 : Wait 50 If LET$="*" Then T=40 : SPEED=6 Paste Icon 340,Y+2,T Inc PNR : If PNR>Len(T$) Then PNR=1 CNT=1 Return End Proc Procedure _INTRO_SETUP Synchro Off Hide Screen 1 Fade 2 : Wait 30 Screen Open 2,310,230,4,Lowres Curs Off : Flash Off : Hide On : Cls 0 Fade 3,$3,$FFF,$B,$F : Wait 45 Autoback 0 End Proc ` Sorry but I cant include this code, maybe later ` since this routine is the fastest I`ve yet seen ` Only 2-3 other coders I think could do it in Amos ` Also, I must stress, that the routine runs in 3 bpls ` because of fading text, but obviously runs a hell of a ` lot faster in 1 or 2. Also while I am writing this, I ` just come up with a version thats 4-5 times faster, but ` its need a bit more work. It runs as much smoother ` and now jerks Procedure SET_UP_DETAILS End Proc Procedure MOVE_STARS End Proc Procedure ST1 Screen Open 2,320,200,8,Lowres Curs Off : Flash Off : Hide On : Cls 0 Autoback 0 Screen Display 2,,60,, EXTRA Screen 2 Fade 2,$3 : Wait 30 Palette $3,$222,$444,$666,$888,$AAA,$CCC,$FFF End Proc Procedure ST2 End Proc Procedure ST3 Unpack 6 To 0 Screen Hide Screen To Front 3 : Screen To Front 4 Screen Display 0,,85,, Screen Open 1,340,200,16,Lowres : Curs Off : Flash Off : Cls 0 : Hide On Get Palette 0 Autoback 0 Double Buffer Repeat Dec POS2 : Inc POS Screen Copy 0,20,POS,290,POS+1 To 1,45,POS+30 Screen Copy 0,20,POS2,290,POS-1 To 1,45,POS2+30 Screen Swap : Wait Vbl Until POS=320 Wait 150 Fade 8 : Wait 120 Screen Close 0 : Screen Close 1 : Screen Close 2 : Screen Close 3 : Screen Close 4 End Proc Procedure EXTRA Screen Open 3,340,8,2,Lowres Curs Off : Flash Off : Cls 0 Autoback 0 Palette $0,$FFF Screen Display 3,112,60,, Screen Open 4,340,8,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Autoback 0 Palette $0,$FFF Screen Display 4,112,260,, X=1 : Q=340 For Q=340 To 0 Step -1 Screen 3 : Plot X,7 : Screen 4 : Plot Q,0 Inc X Next Q End Proc Procedure MULTI_SCROLL Screen 1 : Fade 2 : Wait 30 Screen Close 0 : Screen Close 1 Screen Open 3,340,75,16,Lowres Unpack 12 To 3 Screen Display 3,112,170,,105 Screen Open 2,688,9,2,Hires Curs Off : Flash Off : Cls 0 : Hide On Colour 0,$0 : Colour 1,$FFF Autoback 0 Screen Display 2,,170,, Screen Open 5,340,260,2,Lowres Curs Off : Flash Off : Cls 0 : Hide On Palette $0,$FFF : Autoback 0 Screen Display 5,,36,, Screen Open 6,710,29,2,Laced+Hires Curs Off : Flash Off : Cls 0 : Hide On Autoback 0 Palette $0,$FFF Screen Display 6,,287,, _SCROLL_ROUTINE2[6,0,0,29,2] End Proc Procedure _SCROLL_ROUTINE2[SCRN,X,Y,SIZE,SPEED] SPEED=6 T$=" A Simple blitter scroll without using the slow def scroll" T$=T$+" and not jerky either. It depends what you do to it. Hardware" T$=T$+" is better and finally getting amal to do it makes all the difference" T$=T$+" after a week of scratching my head its done, but its harder using" T$=T$+" the blitter because the results tend to be more jerkier. Even when" T$=T$+" the scrolls are smooth when its now compiled. Which just goes to" T$=T$+" show how optimised the routine has to be. Although several of the" T$=T$+" scrolls are batched together, some of the lines are independently" T$=T$+" moved................................" T2$=" YO PEOPLE MORE SCROLLY THEMES, ALL BLITTER" T2$=T2$+" PRODUCED, NOT HARDWARE WHICH MAKES THINGS" T2$=T2$+" A LOT HARDER IN REPECT OF QUALITY. SADLY" T2$=T2$+" THIS MAY BE THE LAST DEMO FROM ME, FOR THE" T2$=T2$+" SIMPLE REASON I HAVE LEARNT 'C' AND HAVE A" T2$=T2$+" FAIR KNOWLEDGE OF ASM. 'C' IS FAR MORE POWERFUL" T2$=T2$+" AND CAN DO FAR MORE THINGS. WHY? BECAUSE AMOS LACKS" T2$=T2$+" INTUITION AND SPRITE MULTIPLEXING(1 pixel height)" T2$=T2$+", AND OTHER THINGS. EVEN THE MUSIC SYSTEM IS USELESS" T2$=T2$+" WHEN WAS THE AMOS MUSIC CONVERTER LAST UPDATED" T2$=T2$+" UM 1991. EVEN THE START-TRECKER MODULE PLAYER" T2$=T2$+" IS PATHETIC (PROTRACKER 2+) BEING THE NORM THESE DAYS" T2$=T2$+". OK CALL YOUR MUSIC PLAYER THROUGH CLI, BUT THAT" T2$=T2$+" OCCASIONALLY INTERFERES WITH THE AMOS INTERRUPT SYSTEM" T2$=T2$+" SOMETHING WHICH YOU DONT WANT WHEN YOU MOVING" T2$=T2$+" A LARGE NUMBER OF OBJECTS AROUND......................" COUNT=1 Screen To Front 3 Screen To Front 2 Get Rom Fonts Set Font 4 GAP=22 Repeat Inc CNT : If CNT>3 Then Gosub NEWLET Screen Copy SCRN,X,Y,710,SIZE To SCRN,-SPEED,Y Screen Copy SCRN,0,0,345,28 To 5,0,0 Screen Copy 5,0,0,345,32 To 5,0,34 : Wait Vbl Screen Copy 5,0,0,345,66 To 5,0,70 Screen Copy 2,0,0,681,7 To 2,-3,0 Until Mouse Key Screen 2 : Fade 1,,$0 : Wait 15 Screen 5 : Fade 1,,$0 : Wait 15 Screen 6 : Fade 1,,$0 : Wait 15 Screen 3 : Fade 4 : Wait 55 Rainbow Del 3 Screen Close 2 : Screen Close 5 : Screen Close 6 Screen 3 : Cls 0 : Paper 0 : Pen 1 : Locate 0,0 : Centre "Hang on loading multi-part...." Fade 3,$0,$FFF : Wait 45 Pop Proc NEWLET: TEX$=Mid$(T$,PNR,1) TEX2$=Mid$(T2$,PNR2,1) If TEX$="I" Then GAP=19 If TEX$<>"I" Then GAP=24 Text 670,22,TEX$ Screen 2 : Text 670,6,TEX2$ : Screen SCRN Inc PNR : If PNR>Len(T$) Then PNR=1 Inc PNR2 : If PNR2>Len(T2$) Then PNR2=1 CNT=1 Return End Proc